package br.edu.ufcg.nokia.battleship.tests;

import junit.framework.TestCase;
import br.edu.ufcg.nokia.battleship.Navio;

/**
 * 
 * Classe de teste da classe Navio. 
 * 
 * @author Miguel Queiroga, Jackson Azevedo, Edmilson Almeida, Jose Luis
 * @version 1.0
 * 
 */

public class TestNavio extends TestCase{
	
	private Navio fragata = new Navio(Navio.FRAGATA);
	private Navio destroier = new Navio(Navio.DESTROIER);
	private Navio encouracado = new Navio(Navio.ENCOURACADO);
	private Navio porta_aviao = new Navio(Navio.PORTA_AVIOES);
	private Navio submarino = new Navio(Navio.SUBMARINO);
	
	/**
	 * Construtor para a classe de teste do Navio
	 * @param arg0
	 */

	public TestNavio(String arg0){
		super(arg0);
	}

	/**
	 * Verifica funcionalidade do metodo isAfundado.
	 */

	public void testIsAfundado() {
		assertTrue(!fragata.isAfundado());
		assertTrue(!destroier.isAfundado());
		assertTrue(!encouracado.isAfundado());
		assertTrue(!porta_aviao.isAfundado());
		assertTrue(!submarino.isAfundado());	
	}
	
	/**
	 * Verifica funcionalidade do metodo getTamanho 
	 */

	public void testGetTamanho() {
		assertEquals(2, fragata.getTamanho());
		assertEquals(3, destroier.getTamanho());
		assertEquals(4, encouracado.getTamanho());
		assertEquals(5, porta_aviao.getTamanho());
		assertEquals(3, submarino.getTamanho());
	}
	
	/**
	 * Verifica funcionalidade do metodo afundaPedaco
	 */

	public void testAfundaPedaco() {
		fragata.afundaPedaco();
		assertTrue(!fragata.isAfundado());
		fragata.afundaPedaco();
		assertTrue(fragata.isAfundado());				
		submarino.afundaPedaco();
		assertTrue(!submarino.isAfundado());
		submarino.afundaPedaco();
		assertEquals(1, submarino.getTamanho());
		submarino.afundaPedaco();
		assertTrue(submarino.isAfundado());
	}
}